Cinemática personalizada
Ver el PLCopenSingle2.project
proyecto de muestra y el CustomKinematics.library
biblioteca en el directorio de instalación de CODESYS por debajo ..\CODESYS SoftMotion\Examples.
Este ejemplo describe cómo crear una biblioteca con una transformación cinemática personalizada (Gantry3C) y cómo usar esta biblioteca en un proyecto para controlar el robot.
La transformación cinemática 'Gantry3C' consta de 3 ejes lineales (X, Y y Z) que llevan un cabezal de herramienta. El cabezal de la herramienta consta de un eje adicional que lleva una herramienta montada. El cabezal de la herramienta se puede girar alrededor del eje Z.

1. Crea un nuevo proyecto de biblioteca.
Cree un nuevo proyecto con el Biblioteca vacía plantilla.

2. Agregue un administrador de biblioteca.
Agregar un administrador de biblioteca al POU vista. Añade el SM3_Transformation
, SM3_Math
, y SM3_Error
bibliotecas al administrador de bibliotecas.
3. Cree el bloque de funciones Gantry3C.
Este bloque de funciones implementa las interfaces MC_KIN_REF_SM3
y ISMKinematicsWithInfo2
de la biblioteca SM3_Transformation
. Puede definir un desplazamiento como entrada para cada eje. Este desplazamiento se resta antes de la transformación hacia adelante y se suma después de la transformación inversa.

Ejemplo de Gantry3C
con dos cinemáticas desacopladas y KinCoupled
:
FUNCTION_BLOCK Custom_Kin_Gantry3 IMPLEMENTS ISMPositionKinematics FUNCTION_BLOCK Custom_Kin_CAxis IMPLEMENTS ISMOrientationKinematics FUNCTION_BLOCK Custom_Kin_Gantry3C EXTENDS Kin_Coupled
Proporcionar los bloques de funciones Custom_Kin_Gantry3
y Custom_Kin_CAxis
como entradas para el bloque de funciones Kin_Coupled
durante la inicialización. Ahora Custom_Kin_Gantry3C
se convierte en una cinemática acoplada que combina la cinemática de posición y orientación.
4. Implementar los métodos de la interfaz MC_KIN_REF_SM3 y la propiedad NumAxes4.
AxesToCartesian
: Cinemática hacia adelante: Cálculo de la posición y orientación a partir de los valores del eje.
CartesianToAxes
: Cinemática inversa: Cálculo de los valores de los ejes a partir de la posición y la orientación.
NumAxes
: Número de ejes de la cinemática



5. Implementar los métodos de las interfaces ISMKinematicsWithInfo2 e ISMKinematicsWithInfo.
GetAxisProperties
: Propiedades, como el tipo de eje. Se pueden definir los límites para cada eje.
GetKinematicsName
: Nombre de la cinemática
IsSingularity
: Puede ignorarse para esta cinemática.


6. Especifique la información del proyecto.

7. Consulte la biblioteca para ver si hay errores del compilador.
Para consultar la biblioteca, haga clic Construir → Verifique todos los objetos de la piscina.
8. Cree la descripción en el configurador de grupos de ejes.
Cuando la POU tiene el atributo sm_kin_libdoc
, el comentario especificado en el bloque de funciones se utiliza en el configurador de grupos de ejes como descripción de la cinemática. Para ello, se utiliza formato de texto reestructurado.



Incluir el atributo
sm_kin_libdoc
como se muestra en la imagen de arriba.Incluya las propiedades requeridas del proyecto DocFormat y DocLanguages (en el cuadro de diálogo de información del proyecto) relacionado con la documentación de la biblioteca.
Resultado:
Asegúrese de que el directorio de instalación de CODESYS contiene la
libdoc.exe
archivo ejecutable (directorio:...\DocScripting\3.5.xx.0
\).Descargue el convertidor wkhtmltox de 32 bits con la versión 0.12.5 o inferior de https://wkhtmltopdf.org/downloads.html. Extrae el
wkhtmltox.dll
archivar y copiar a...\DocScripting\3.5.xx.0\\bin
en el CODESYS directorio de instalación.Importante
Ya que
wkhtmltox.dll
ya no admite imágenes de forma predeterminada en la versión 0.12.6 y superior, debe utilizar la versión 0.12.5 o inferior.Crea la variable del sistema
LIBDOC_CODESYS
en Windows. Establezca el valor en la ruta del archivo deCODESYS.exe
. Asegúrese de especificar el nombre de la ruta y el nombre del perfil entre comillas dobles.Resultado:
Guarde, cierre y vuelva a abrir el proyecto de biblioteca.
Hacer clic
.La biblioteca compilada se instalará en el proyecto que utiliza esta cinemática.
Usar la biblioteca en un proyecto (CustomKinematics_Implementation.project)
El proyecto demuestra cómo usar y controlar la cinemática creada en la sección anterior haciendo jogging o al mando de un movimiento.
Crear un CODESYS proyecto estándar con el CODESYS SoftMotion Win controlador.
Abra el Administrador de bibliotecas e instale la biblioteca
CustomKinematics.compiled-library
(creado en la sección anterior) que contiene la cinemática Gantry3C. Agregue la biblioteca al Administrador de bibliotecas.Agregue un objeto de grupo de ejes y seleccione el KinCustom.Gantry3C cinemática.
Resultado:
Agregue 4 ejes virtuales al Piscina SoftMotion General Axis grupo de ejes en el árbol de dispositivos. (DriveX, Y, Z y C)
Abra el configurador de grupos de ejes. En el Asignación a ejes sección, mapee los ejes a sus respectivos campos.
Resultado:
El programa
Prg_Visu
es el programa principal que controla el grupo de ejes. Cuando se inicia la aplicación,Prg_Visu
enciende el grupo de ejes y lo habilita. Además, llama a todos los bloques de función necesarios para controlar el grupo de ejes (jogging, lineales y movimientos PTP). Todos estos movimientos se pueden controlar desde la visualización adjunta.Resultado:
Bloque de funciones:
Jog
: Este FB combina jogging en el espacio de ejes y en el espacio cartesiano. Utiliza dos instancias deSMC_GroupJog2
. Uno es para el espacio de ejes y el otro es para el espacio cartesiano. Este bloque de funciones se puede utilizar con las plantillas de visualización. V_RobotPosition_ejes y V_RobotPosition_cart_Jog para activar cualquier cinemática en el espacio cartesiano y de ejes.Resultado:
FB SMC_TRAFOF_Gantry3C
: Este bloque de funciones transforma los valores del eje de entrada de una cinemática Gantry3C en sus respectivos valores de TCP. Además, los valores de los ejes se normalizan para que se puedan utilizar con la plantilla de visualización.TRAFOF_Gantry3C_YZ
visualizar los movimientos de la cinemática.Resultado:
Compila y ejecuta la aplicación. Abra la visualización. Puede mover el robot en el espacio del eje así como en el espacio cartesiano. También hay plantillas de visualización para controlar un movimiento lineal o PTP.
Resultado:
Sugerencia
El ejemplo que se describe aquí analiza los ejes de posicionamiento y orientación en un bloque de función común. Muchas cinemáticas pueden comprender dos cinemáticas parciales desacopladas: una cinemática de posicionamiento (delta, pórtico, etc.) y una cinemática de orientación (herramientas como el eje C, Wrist2, Wrist3, etc.). Ambas cinemáticas están conectadas entre sí en el "punto de brida", el TCP de la cinemática de posicionamiento. La cinemática de orientación se caracteriza por el hecho de que es capaz de calcular el vector desde el punto de brida hasta el TCP de la cinemática acoplada. El cálculo se realiza utilizando solo la orientación de este TCP (lo que significa que es independiente de la cinemática de posicionamiento o independiente de la orientación del punto de brida). La cinemática de posicionamiento, a su vez, debe poder determinar las posiciones de sus ejes únicamente a partir de la posición del punto de brida. No debe depender de la orientación del punto de la brida.
En este caso, puede recurrir a interfaces como ISMPositionKinematics
o ISMOrientationKinematics
. Para implementar estas interfaces, defina un bloque de funciones para implementar ISMPositionKinematics
y otro bloque de funciones para implementar ISMOrientationKinematics
. Finalmente, defina un bloque de funciones que extienda el bloque de funciones. Kin_Coupled
(de SM3_Transformation
) con los bloques de funciones previamente definidos como entradas.
Para más información, ver: Creación de cinemáticas personalizadas